Android 禁止RecycleView的滑动

45 篇文章 0 订阅

1.问题?

使用RecycleView 时,如果数据量很少只有几个,需求不需要它上下左右滑动,在xml配置中加上Android:scrollbars=”none”,这只是去掉了滑动bar。

但是RecycleView 上下还是能滑动,且有阴影。

2.解决方案

How to disable RecyclerView scrolling?

public class CustomLinearLayoutManager extends LinearLayoutManager {
    private boolean isScrollEnabled = true;

    public CustomLinearLayoutManager(Context context) {
        super(context);
    }

    public void setScrollEnabled(boolean flag) {
        this.isScrollEnabled = flag;
    }

    @Override
    public boolean canScrollVertically() {
        //Similarly you can customize "canScrollHorizontally()" for managing horizontal scroll
        return isScrollEnabled && super.canScrollVertically();
    }
}
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在 RecyclerView 设置LinearLayout的时候 继承上述子类,并设置setScrollEnabled 为false 即可。

      CustomLinearLayoutManager linearLayoutManager = new CustomLinearLayoutManager(mContext);
        linearLayoutManager.setScrollEnabled(false);
        mDevicesRV.setLayoutManager(linearLayoutManager);
 
 
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

3.参考链接

https://my.oschina.net/u/1446823/blog/712306

http://stackoverflow.com/questions/30531091/how-to-disable-recyclerview-scrolling

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中,可以通过自定义RecyclerView的ItemAnimator来实现滑动ItemView变大的效果。 首先,我们需要创建一个类来继承自RecyclerView.ItemAnimator,该类将负责处理ItemView的动画效果。代码如下: ```java public class CustomItemAnimator extends RecyclerView.ItemAnimator { @Override public boolean animateRemove(RecyclerView.ViewHolder holder) { return false; } @Override public boolean animateAdd(RecyclerView.ViewHolder holder) { return false; } @Override public boolean animateMove(RecyclerView.ViewHolder holder, int fromX, int fromY, int toX, int toY) { return false; } @Override public boolean animateChange(RecyclerView.ViewHolder oldHolder, RecyclerView.ViewHolder newHolder, int fromLeft, int fromTop, int toLeft, int toTop) { if (oldHolder != null) { // 缩小旧的ItemView AnimatorSet animatorSet = new AnimatorSet(); animatorSet.playTogether(ObjectAnimator.ofFloat(oldHolder.itemView, "scaleX", 1f, 0.5f), ObjectAnimator.ofFloat(oldHolder.itemView, "scaleY", 1f, 0.5f)); animatorSet.setDuration(getChangeDuration()).start(); } if (newHolder != null) { // 放大新的ItemView AnimatorSet animatorSet = new AnimatorSet(); animatorSet.playTogether(ObjectAnimator.ofFloat(newHolder.itemView, "scaleX", 0.5f, 1f), ObjectAnimator.ofFloat(newHolder.itemView, "scaleY", 0.5f, 1f)); animatorSet.setDuration(getChangeDuration()).start(); } return false; } @Override public void runPendingAnimations() { } @Override public void endAnimation(RecyclerView.ViewHolder item) { } @Override public void endAnimations() { } @Override public boolean isRunning() { return false; } } ``` 接下来,在使用RecyclerView的地方,需调用setItemAnimator方法将自定义的ItemAnimator设置给RecyclerView。代码如下: ```java RecyclerView recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setItemAnimator(new CustomItemAnimator()); ``` 这样,当RecyclerView中的ItemView发生变化时,就会执行我们自定义的动画效果了。其中,在animateChange方法中我们通过对新旧ItemView的scaleX和scaleY属性进行属性动画来实现滑动ItemView变大的效果。 希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值